package com.ruoyi.finance.test;

import redis.clients.jedis.Jedis;

public class CachePenetrationSolution {
    private static final int NULL_CACHE_EXPIRE_TIME = 60; // 空值缓存过期时间，单位：秒
    private static Jedis jedis = new Jedis("localhost", 6379);

    public static void main(String[] args) {
        for (int i = 1000; i < 1100; i++) {
            String key = "key_" + i;
            String value = jedis.get(key);
            if (value == null) {
                // 缓存中不存在，从数据库获取数据
                value = getDataFromDatabase(key);
                if (value == null) {
                    // 数据库中也不存在，缓存空值
                    jedis.setex(key, NULL_CACHE_EXPIRE_TIME, "NULL");
                } else {
                    // 数据库中有数据，设置缓存
                    jedis.set(key, value);
                }
            }
            if ("NULL".equals(value)) {
                value = null;
            }
            System.out.println("Key: " + key + ", Value: " + value);
        }
        jedis.close();
    }

    private static String getDataFromDatabase(String key) {
        // 模拟数据库中不存在这些数据
        return null;
    }
}